#ifndef APPSETTINGSMODELPARSER_H
#define APPSETTINGSMODELPARSER_H

#include "../IStore/IStore.h"
#include "AppSettingsDataModelTypeDef.h"

class AppSettingsModelParser : public IModelParser<AppSettingsModel>
{
public:
    explicit AppSettingsModelParser();

    // 转换成Json字符串
    QString toString(const AppSettingsModel& model) override;

private:
    // 主解析函数：从 JSON 文档解析为 AppSettingsModel
    AppSettingsModel parseFromJson(const QJsonObject &json) override;

    // 解析 GeneralSettingsModel
    GeneralSettingsModel parseGeneral(const QJsonObject &json);

    // 解析 LogSettingsModel
    LogSettingsModel parseLog(const QJsonObject &json);

    // 解析 CmdSettingsModel
    CmdSettingsModel parseCmd(const QJsonObject &json);

    // 解析 CodeSettingsModel
    CodeSettingsModel parseCode(const QJsonObject &json);

    // 将 GeneralSettingsModel 转换为 JSON 对象
    QJsonObject generalToJson(const GeneralSettingsModel& general);

    // 将 LogSettingsModel 转换为 JSON 对象
    QJsonObject logToJson(const LogSettingsModel& log);

    // 将 CmdSettingsModel 转换为 JSON 对象
    QJsonObject cmdToJson(const CmdSettingsModel& cmd);

    // 将 CodeSettingsModel 转换为 JSON 对象
    QJsonObject codeToJson(const CodeSettingsModel& code);
};

#endif // APPSETTINGSMODELPARSER_H
